Обикновени диференциални уравнения и системи
с функциите DSolve, NDSolve и визуализиране на резултата с Plot[Evaluate[ ]]
Пример 1. Решаваме линейното диференциално уравнение от първи ред y' = - x y относно x. Получаваме формула на общото решение, зависещо от една произволна константа C[1]. Във втория ред запомняме решението в клетката u чрез извличане от списък с операцията [[ ]].
DSolve[y'[x]== -x*y[x], y[x],x]
u=y[x] /.%[[1]]
Пример 2. Намираме частно решение като заместим константата с конкретна стойност и визуализираме резултатачрез функцията Plot, тъй като той е в аналитичен вид (формула).
w=u /.C[1]->1
g1=Plot[w,{x,-5,5}]
Пример 3. Уравнението от Пример 1 става задача на Коши (начална задача), ако зададем условие за стойност на търсената функция y в определена точка, нека например при x=0, y=-2. Изобразяваме решението в подходящ интервал.
DSolve[ {y'[x]== -x*y[x],y[0]==-2}, y[x],x]
u1=y[x] /.%[[1]]
Plot[u1,{x,0,5}]
Пример 4. Същата начална задача от Пример 3 можем да решим и числено чрез функцията NDSolve. Всъщност тази функция се използва предимно когато не съществува аналитично представяне на решението във вид на формула или пък формулата е много сложна. С нея се решават почти всички начални задачи. Но резултатът е във вид на набор от числа, които Mathematica интерполира при необходимост.
В първия ред решаваме приближено задачата в определен интервал, във втория ред извличаме стойност на търсената функция y в точката x=1.5, а в третия отпечатваме точната стойност, която се изчислява от намерената преди формула. Има разлика в седмия десетичен знак.
NDSolve[ {y'[x]==-x* y[x],y[0]==-2}, y,{x,0,2}]
y[1.5] /.%
u1 /. x->1.5
Пример 5. Тук показваме как се визуализира графиката на решението и изчисляваме стойността y на в точката x=0.5.
NDSolve[ {y'[x]== y[x],y[0]==-2}, y,{x,0,2}]
Plot[ Evaluate[y[x]/.%],{x,0,2}]
y[0.5] /.%%
Пример 7. Тук решаваме начална чадача за система от две обикноивени диференциални уравнения и показваме графиките на получените решения.
u1= y'[x]== z[x]
u2= z'[x] == -y[x]
u10= y[0]==0
u20= z[0]==1
NDSolve[{u1,u2,u10,u20}, {y ,z }, {x,0,Pi}]
g1=Plot[ Evaluate[y[x] /.%], {x,0,Pi}]
g2=Plot[ Evaluate[z[x] /.%%], {x,0,Pi}]
Пример 8. Едновременно визуализиране на двете графики.
Show[g1,g2]
Created by Mathematica (May 21, 2008)